package com.thh.poiToWord;

import com.deepoove.poi.XWPFTemplate;

import java.io.*;
import java.net.URL;
import java.util.HashMap;


/**
 * 从一个超级简单的例子开始：把{{title}}替换成"poi-tl 模板引擎"。
 *
 * 新建文档模板template.docx，包含标签{{title}}
 * TDO模式：Template + data-model = output
 */




public class SimpleDemo {
    public static void main(String[] args) throws IOException {
        //testHelloWorld();
        testHelloWorld2();
    }




    /**
     * 标签由前后两个大括号组成，{{title}}是标签，{{?title}}也是标签，
     * title是这个标签的名称，?标识了标签类型，接下来我们来看看有哪些标签类型。
     */

    //简单测试案例   拿到文件  Template + data-model = output
    public static void testHelloWorld() throws IOException{
        //comple()一般要相对路径  这样的情况下 很不稳妥 因为你换个目录又会出问题 已经可能你这个项目名字变了又得换
       /* XWPFTemplate.compile("poi-word-demo1\\src\\main\\resources\\simple.docx").render(new HashMap<String, Object>(){{
            put("title", "poi-tl 模板引擎");
        }}).writeToFile("out_template.docx");*/
        //要类路径是最妥当的做法 然后获取流是最稳妥的
        URL url = SimpleDemo.class.getResource("/simple.docx");
        InputStream inputStream     =   url.openStream();
        XWPFTemplate.compile(inputStream).render(new HashMap<String, Object>() {{
            put("helloWorld", "helloWorld,poi-tl 模板引擎");
        }}).writeToFile("out_template.docx");




    }


    //这样会生成在项目目录下  之后的话 我们会用到response.getOutputStream
    public static void testHelloWorld2() throws IOException{
        XWPFTemplate template = null;
        InputStream inputStream = null;
        OutputStream outputStream = null;
        try {
            URL urlRoot = SimpleDemo.class.getResource("/");
            URL url = SimpleDemo.class.getResource("/simple.docx");
            inputStream     =   url.openStream();
            String RootDir = urlRoot.getFile();
            File dest = new File(RootDir+"\\out.docx");
            if (!dest.exists()){
                dest.createNewFile();
            }
            outputStream = new FileOutputStream(dest);
             template =  XWPFTemplate.compile(inputStream).render(new HashMap<String, Object>(){{
                put("helloWorld", "helloWorld,poi-tl 模板引擎");
            }});
            template.write(outputStream);
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            if (inputStream!=null){
                inputStream.close();
            }
            if (template!=null){
                template.close();
            }
            if (outputStream!=null){
                outputStream.close();
            }

        }


    }


    // 输出流
//template.write(OutputStream stream)

// 输出到文件
//template.writeToFile(String path)



}
